/*
 * ExponentialGenerator.h
 *
 *  Created on: 2011-03-09
 *      Author: Jagger
 */

#ifndef __EXPONENTIALGENERATOR_H__
#define __EXPONENTIALGENERATOR_H__

#include <omnetpp.h>
#include "AbstractGenerator.h"

/**
 * Klasa implementujaca generator ktorego odstepy czasowe miedzy wysylanymi
 * pakietami sa wartosciami losowymi wyznaczonymi z rozkladu wykladniczego.
 */
class ExponentialGenerator : public AbstractGenerator
{
protected:
	/**
	 * Parametr okreslajacy wartosc oczekiwana rozkladu wykladniczego.
	 */
	simtime_t mean;

	/**
	 * Iniciuje parametr 'mean'. Wewnetrznie wywoluje metode 'initialize'
	 * swojej nadklasy.
	 */
	virtual void initialize();
	/**
	 * Wyznacza czas wygenerowania kolejnego pakietu na podstawie czasu ostatnio
	 * wygenerowanego pakietu oraz rozkladu wykladniczego.
	 */
	virtual simtime_t getNextPacketArrivalTime(simtime_t lastPacketArrival);
};

#endif
